<?php 
	require_once("MoneyFactory.class.php"); 
	require_once("MoneyOps.class.php"); 
	
  // Demarrage systeme de session (ne doit pas etre changer de place*/
  session_start(); 


/**
* Permet de charger la table des monnaies d'utilisateur.
**/
function  LoadUserMoneys()
{
	/*Porte monnaie dans la session*/
	if(!isset($_SESSION['tab_monnaie']))
	{
	   $defaultCurrencies = MoneyFactory::getDefaultCurrencies();
	   $_SESSION['tab_monnaie']=array();
	   foreach($defaultCurrencies AS  $currency) 
		{
			 $_SESSION['tab_monnaie'][$currency]=0;
	    }
	}
	//Load user currencies + default currencies.
	if(isset($_SESSION['factory'])) {
		$moneyFactory =  $_SESSION['factory'];		
	}else{
		$moneyFactory = new MoneyFactory();
		
		$str = serialize($moneyFactory);
		$_SESSION['factory']  =$str;
	}
}

     /** Traitements des demandes de l'utilisateur **/

     /**
	 * Permet de répondre à la demande de création d'une nouvelle devise.
	 **/
     function CreateNewDeviseAction($Currency)
	 {
	    $moneyFactory = unserialize($_SESSION['factory']);
	    try
		{
		  //Ajout de la devise, en utilisant la méthode d'ajout d'une devise de MoneyFactory.php
		  $moneyFactory->addCurrencie($Currency);
		  // Mise à jour de la table des monnaies d'utilisateur. (Ajout de la nouvelle devise)
		  $_SESSION['tab_monnaie'][$_REQUEST["in_newC"]] = 0;
	
		}catch(Exception $exp)
		{
		
		}
		$str = serialize($moneyFactory);
		$_SESSION['factory'] = $str;
	 }

    /**
	* Permet de traiter la demande de l'utilisateur
	**/
	function processRequest() {
	    //Si opération sur les devises
		if (isset($_REQUEST["in_newC"])) 
		{
		$newCurrency= $_REQUEST["in_newC"];
		//Ajouter la devise
	    CreateNewDeviseAction( $newCurrency );
	   }	
	else
	{
	//Opération sur la porte monnaie
	  if (isset($_REQUEST["ops"]) && isset($_REQUEST["v1"]) && isset($_REQUEST["c1"]) ) 
		{
				/*On recherche dans le tableau la valeur correspondante*/
				$tab_monney = $_SESSION['tab_monnaie'];
				$isTransfert = false;
				if(isset($tab_monney[$_REQUEST["c1"]]))
				{  
					
					//Chargement du moneyFactory de l'utilisateur
					$moneyFactory= unserialize($_SESSION['factory']);
					//Chargement de l'opérateur des monnaie
					$moneyOps = new MoneyOps($moneyFactory);
					
					//Monnaie de destination
				    $moneyDestination = $_REQUEST["c1"];
					//Montant à appliquer
				    $newMontant=$_REQUEST["v1"];
					$m1=$moneyFactory->createMoney($newMontant,$moneyDestination);
				   //Si ajout d'argent et la devise de destination diffrente de la devise du montant
				   if (!empty($_REQUEST["c2"]) & $_REQUEST["c2"]!=$moneyDestination )
				   {
						if(isset($_REQUEST["transfert"])){
							$taux = $_REQUEST["in_changeRatio"];
							
							$newMontant= $moneyOps::convert($m1,$taux);
							$m2bis=$moneyFactory->createMoney($newMontant,$_REQUEST["c2"]);
							$m3bis=$moneyFactory->createMoney($newMontant,$_REQUEST["c1"]);
							$resu=$moneyOps::sub($m1,$m3);
							
							$_SESSION['tab_monnaie'][$m1->getCurrency()] -= $m1->getValue();
							$_SESSION['tab_monnaie'][$m2bis->getCurrency()] += $newMontant;
							$isTransfert = true;

						}else{
							 
							 //devise de destination.
							  $moneyDestination = $_REQUEST["c2"];

							  //calcul du nouveau montant
							  $taux = $_REQUEST["in_changeRatio"];
							  $newMontant= $moneyOps::convert($m1,$taux);
							  //mettre à jour du montant du m1
							  $m1=$moneyFactory->createMoney($newMontant,$moneyDestination);
					  }
				   }
					
					$m2=$moneyFactory->createMoney($tab_monney[$moneyDestination],$moneyDestination);
					$opsCode=$_REQUEST["ops"];
					if(!$isTransfert)
					{
						if (strcmp($opsCode,"ADD")==0) {
							$res=$moneyOps::add($m1,$m2);
						} 
						if (strcmp($opsCode,"SUB")==0) {
							$res=$moneyOps::sub($m1,$m2);
						}
						if (isset($res) && ($res instanceOf Money)) {
						  //echo "(",$res->getCurrency(),") ",$res->getValue();
						  $_SESSION['tab_monnaie'][$moneyDestination] = $res->getValue();
						} else echo "Unsupported operations"; 
					}
					
				}
			}
	}
	}
?>

<html>
	<head>
		<title>Money Operations</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
	</head>
	<body>
		<?php
		//Chargement de la table des monnaies de l'utilisateur
		LoadUserMoneys();
		//Répondre à sa demande.
		processRequest();	
		?>
		<hr width='20%' align='left'/>
		<h2> Gestion de ma porte monnaie</h2>
		<form action='index.php' method='post' id='form0'>
		<fieldset>
		<legend>Mon porte Monney :</legend>
		<table>
			<?php 
			foreach($_SESSION['tab_monnaie'] AS $cle => $valeur) 
			 { 
			 ?>
				<tr><td><?php echo $valeur;?>   <?php echo $cle?></td></tr>
				<?php
			 } 
			?>
		</table>
		</fieldset>
		<fieldset>
		<legend> Effectuer des opérations :</legend>
		<table>
			<tr>
			  <td>Valeur</td><td>Devise</td><td>Op&eacute;ration</td>
			</tr>
			<tr>
			  <td><input type='text' id='v1' name='v1' value='<?php if(isset ($_REQUEST["v1"])) echo $_REQUEST["v1"];?>'/></td>
			  <td>
				  <select name="c1" id="c1">
						<?php 
					foreach($_SESSION['tab_monnaie'] AS $cle => $valeur) 
					 { 
						 echo '<option value="' . $cle . '">'. $cle .'</option>';
					 } 
					?>
				  </select>
			  <td>
				<select name='ops'>
					<option value='ADD'>+</option>
					<option value='SUB'>-</option>
				</select></td>
			   <td colspan='5' align='right'><input type='submit' value='calculer'/></td>			
			</tr>
			<tr>
			<tr></tr>
			<td><label for="transfert">Ceci est un transfert</label><br /></td><td>Devise destination</td><td>Taux de change</td>
			</tr>
			<tr> 
			<td><input type="checkbox" name="transfert" id="transfert" /></td>
			<td>
				  <select name="c2" id="c2">
				  <option value="">--</option>
					<?php 
					foreach($_SESSION['tab_monnaie'] AS $cle => $valeur) 
					 { 
						 echo '<option value="' . $cle . '">'. $cle .'</option>';
					 } 
					?>
				  </select>
			</td>
			<td><input type='text' id='in_changeRatio' name='in_changeRatio' value="1"/>
			</td>
			 </tr>
		</table>
		</fieldset>
		</form>
	<form action='index.php' method='post' id='form_Devices'>
		<fieldset>
		<legend>Gestions des devises</legend>	 
		<br/>
	    <table>
			<tr>
			
		<td colspan="5">Définir d'une nouvelle devise:</td>
		</tr>
			 <tr>
			 <td></td>
			 <td></td>
			 <td>
			 <label>Nom :</label>
			 </td>
			 <td>
			 <input type='text' id='in_newC' name='in_newC' value=""/>
			 </td>
			 <td>
			 <input type='submit' name='AddNewCurrency' value="Ajouter"/>
			 </td>	
			 </tr>
		</table>
		</fieldset>
		</form>
	</body>
</html>
